记
window.alert window.prompt window.confirm
document.write() document.writeln()
“liuhong”==”liuhong” //true
“Liuhong”==”liuhong” //false
5==5.0 //true
“5”==5 //true
“5.5”==5.5 //true
NaN==NaN //false
null==null //true
-0==+0 //true
false==false //true
true==1 //true
null==undefined //true
“liuhong”===”liuhong” //true
“Liuhong”===”liuhong” //false
5===5.0 //true
“5”===5 //false
NaN===NaN //false
null===null //true
-0===+0 //true
false===false //true
true===1 //false
null===undefined //false
记
保留字:指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。保留字包括关键字和未使用的保留字。关键字则指在语言中有特定含义,成为语法中一部分的那些字。在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。一般出现这种情况可能是由于考虑扩展性。例如,Javascript有一些未来保留字,如abstract、double、goto等等。
闭包是定义在另一个函数中的匿名函数。当外部函数退出时,它会返回内部匿名函数的引用,使得通过引用调用内部函数成为可能。闭包意味着局部变量对内部函数仍然可用即使它已经超出其作用域。闭包可以让变量一直存活到不再需要它们的时候。
js支持多种对象:
(1)由程序员定义的用户自定义对象;
(2)核心或内置对象,如Date、String及Number
(3)浏览器对象,即Bom
(4)文档对象,即Dom
js的with语句使用方法
1)简要说明
with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。
2)语法格式
with(object instance)
{
//代码块
}
有时候,我在一个程序代码中,多次需要使用某对象的属性或方法,照以前的写法,都是通过:对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法,着实有点麻烦,学习了with语句后,可以通过类似如下的方式来实现:
with(objInstance)
{
var str = 属性1;
…..
} 去除了多次写对象名的麻烦。
3)举例
<script language="javascript">
<!--
function Lakers() {
this.name = "kobe bryant";
this.age = "28";
this.gender = "boy";
}
var people=new Lakers();
with(people)
{
var str = "姓名: " + name + "<br>";
str += "年龄:" + age + "<br>";
str += "性别:" + gender;
document.write(str);
}
//-->
</script>
代码执行效果如下:
姓名: kobe bryant
年龄:28
性别:boy
记
constructor:对创建对象函数的引用
prototype:对对象原型的引用。该参数使得对象可以共享属性和方法。
slice()方法将数组的元素复制到另一个新数组中,参数为起始元素和终止元素且不包括该索引表示的元素。
splice()将从数组的某一位置开始移除指定书目的元素,并可以使用新元素替代这些元素。
ceil()上取整
floor()下取整
round()当原数的小数部分为0.5或大于0.5时向上取整否则向下取整。
wrapper:它是js中的一种对象,它与其所代表的基础数组类型同名。每种基础数据类型均有其对应的String对象、Number对象和Boolean对象。这些对象都叫做wrapper.
Function对象的方法
apply()可以将一个函数的方法应用于另一个函数
call()通过另一个对象调用一个方法
var num1 = 3.1415927;
//返回指定的位数的数字
var num3 = num1.toPrecision(4);
函数使用技巧
(function(){
//代理函数-->用程序来决定返回的新的函数(他是一个生产函数的函数)
//模拟数据库
var person = {"jim":"m","lili":"w"}
var test = function(name){
if(person[name] == "m"){
/**
* 内科,外科
*/
return function(nk,wk){
alert(nk+" "+wk)
}
}else if(person[name] == "w"){
/**
* 内科,外科,妇科
*/
return function(nk,wk,fk){
alert(nk+" "+wk+" "+fk)
}
}
}
test("jim")("ok","ok")
test("lili")("ok","ok","no")
})()
var cat = {};//cat空类
//默认隐藏的调用下面的代码
Object.getPrototypeOf(cat).name = "MAOMI";
cat.__proto__.master = "USPCAT.COM";
//测试
cat.age = 2;
cat["sex"] = "MAN";
alert(cat.name +" "+cat.age+" "+cat["sex"]+" "+cat.master)
/**
* 聚合函数
*/
function mixin(receivingClass,givingClass){
for(methodName in givingClass){
if(!receivingClass.__proto__[methodName]){
receivingClass.__proto__[methodName] = givingClass[methodName]
}
}
}
桥梁模式在于可以独立的修改,而门面模式的意义在于调用的方便,适配器是为了解决已有接口有的类不兼容的问题。
享元模式是一个为了提高性能(空间复杂度)的设计模式,它适用于程序会生产大量的相类似的对象是耗用大量的内存的问题
代理模式是一个对象(proxy)用它来控制目标对象的访问,它要实现与目标对象相同的接口,但是它不同于装饰者模式
责任链模式消除发送者与接收者之间的耦合1.责任链的发送者知道链的入口是谁 2.每一个链节点知道自己的下一个节点是谁 3.每一个链的传入和传输值是一样的
命令模式:用于消除调用者和接收者直接的耦合的模式,并且可以对(调用这个过程进行留痕操作)真的不要乱用这个模式,因为它使你简单调用写法变得非常的复杂和有些难理解(重点)当你的业务出现了 (回退操作)(重做操作)的需求的时候你就要考虑使用这个模式了。
观察者模式:它分为2个角色1.观察者,2.被观察者2观察者模式的目的对程序的内在变化进行观察,当其有变化的时候3你可以得知,并且可以做出相应的反应